<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Contrato extends MY_Controller {

	public function __construct()
	{
		parent::__construct();
	}

	public function cadastro($id = 'novo')
	{

		// Model
		$this->load->model('contrato_model', 'contrato');
		$this->load->model('credor_model', 'credor');
		$this->load->model('contrato_status_model', 'contrato_status');
		$this->load->model('cidade_model', 'cidade');
		$this->load->model('estado_model', 'estado');
		// Helper
		$this->load->helper('data');
		$this->load->helper('number');

		$dados = array(
			'campos_erro' => '',
			'erro'        => ''
		);

		// ==== FORM SUBMITED ==== //
		if ($this->input->post())
		{
			$this->load->library('form_validation');

			$this->form_validation->set_rules('select_credor', '<strong>Credor</strong>', 'required|xss_clean');
			$this->form_validation->set_rules('txt_numero_contrato', '<strong>Número Contrato</strong>', 'required|min_length[2]|max_length[30]|xss_clean');
			$this->form_validation->set_rules('select_entidade', '<strong>Entidade</strong>', 'required|xss_clean');
			$this->form_validation->set_rules('txt_nome_contrato', '<strong>Nome</strong>', 'trim|required|min_length[2]|max_length[100]|xss_clean');
			$this->form_validation->set_rules('select_contrato_status', '<strong>Status do contrato</strong>', 'trim|required|xss_clean');
			$this->form_validation->set_rules('txt_doc', '<strong>CPF / CNPJ</strong>', 'trim|required|valida_documento|xss_clean');
			$this->form_validation->set_rules('select_uf', '<strong>Estado</strong>', 'trim|required|min_length[2]|max_length[2]|xss_clean');
			$this->form_validation->set_rules('select_cidade', '<strong>Cidade</strong>', 'trim|required|min_length[3]|max_length[60]|xss_clean');
			/* Opcionais */
			$this->form_validation->set_rules('txt_empresa', '<strong>Empresa</strong>', 'trim|min_length[2]|max_length[45]|xss_clean');
			$this->form_validation->set_rules('txt_data_entrada', '<strong>Data Entrada</strong>', 'trim|valid_date|xss_clean');
			$this->form_validation->set_rules('txt_data_expiracao', '<strong>Data Expiração</strong>', 'trim|valid_date|xss_clean');
			$this->form_validation->set_rules('txt_data_devolucao', '<strong>Data Devolução</strong>', 'trim|valid_date|xss_clean');

			$this->form_validation->set_rules('txt_cep', '<strong>CEP</strong>', 'trim|valida_cep|exact_length[9]|xss_clean');
			$this->form_validation->set_rules('txt_bairro', '<strong>Bairro</strong>', 'trim|min_length[2]|max_length[50]|xss_clean');
			$this->form_validation->set_rules('txt_endereco', '<strong>Endereço</strong>', 'trim|min_length[5]|max_length[255]|xss_clean');
			$this->form_validation->set_rules('txt_complemento', '<strong>Complemento</strong>', 'trim|min_length[5]|max_length[45]|xss_clean');
			$this->form_validation->set_rules('txt_numero', '<strong>Número</strong>', 'trim|min_length[1]|max_length[10]|xss_clean');

			if ($this->form_validation->run() === FALSE)
			{
				// Quais campos contem erro de validação?
				foreach ($this->input->post() as $nome_campo => $valor)
				{
					if (form_error($nome_campo) != '')
					{
						$dados['campos_erro'][] = $nome_campo;	
					}
					
				}
				// Campos que deram erro em uma string json para adicionar a classe de erro
				$dados['campos_erro'] = json_encode($dados['campos_erro']);

				// Função que adiciona um erro
				$dados['erro'] = add_alert('erro', validation_errors());
			}
			else
			{
				// Validação ok inserir os dados
				$data = array(
					'cr_id'              => $this->input->post('select_credor'),
					'cs_id'              => $this->input->post('select_contrato_status'),
					'en_id'              => $this->input->post('select_entidade'),
					'co_numero_contrato' => $this->input->post('txt_numero_contrato'),
					'co_nome'            => $this->input->post('txt_nome_contrato'),
					'co_doc'             => clean_number($this->input->post('txt_doc')),
					'co_estado'          => $this->input->post('select_uf'),
					'co_cidade'          => $this->input->post('select_cidade'),
					
					'co_data_entrada'    => ($this->input->post('txt_data_entrada')) ? converte_data($this->input->post('txt_data_entrada')) : NULL,
					'co_data_expiracao'  => ($this->input->post('txt_data_expiracao')) ? converte_data($this->input->post('txt_data_expiracao')) : NULL,
					'co_data_devolucao'  => ($this->input->post('txt_data_devolucao')) ? converte_data($this->input->post('txt_data_devolucao')) : NULL,
					'co_empresa'         => $this->input->post('txt_empresa'),
					'co_cep'             => clean_number($this->input->post('txt_cep')),
					'co_bairro'          => $this->input->post('txt_bairro'),
					'co_endereco'        => $this->input->post('txt_endereco'),
					'co_complemento'     => $this->input->post('txt_complemento'),
					'co_numero'          => $this->input->post('txt_numero')
				);

				$this->contrato->inserir('contrato', $data);

				// View com a mensagem de sucesso.
				$dados['link_redirecionar'] = 'contrato/visualizar';
				$this->template->write_view('content', 'status/sucesso_view', $dados);
				$this->template->render();
				return;
			}

		}
		// ======== //

		// Option para o select
		$credor_selecionado              = ($this->input->post('select_credor')) ? $this->input->post('select_credor') : NULL;
		$status_selecionado              = ($this->input->post('select_contrato_status')) ? $this->input->post('select_contrato_status') : 1;
		$dados['option_credor']          = $this->credor->credor_option(TRUE, $credor_selecionado);
		$dados['option_contrato_status'] = $this->contrato_status->option_contrato_status(FALSE, $status_selecionado);
		$dados['option_estado']          = $this->estado->estado_option(TRUE);

		$this->template->add_js('plugin/calendar/tcal.js');
		$this->template->add_css('js/plugin/calendar/tcal.css');

		$this->template->add_js('system/contrato/cadastro.js');
		$this->template->write_view('content', 'contrato/cadastro', $dados);
		$this->template->render();
	}

	public function salvar()
	{
		redirect('contrato/cadastro/novo');
	}
}